#include <iostream>
using namespace std;

void f(const string& info, const int& x){ // 常量引用是种道德保证，声称不会修改。
  cout << info << ": " << x << " -> " << flush; // 及时刷新，免得崩溃时来不及输出
  *(int*)&x *= 10; // 但非要改也无奈，后果看x的实际情况。
  cout << x << endl;
}

int x = 1; // 全局变量，在.data段，实际可写。

const int y = 2; // 这是真·常量，布置在程序的.readonly段。
// 运行时操作系统把进程的这页内存设为只读，敢写就崩。

int main() {
  const int z = 3; // 局部常量，在.stack段，实际可写。
  f("全局变量", x);
  f("局部常量", z); // 先测试z。测试y程序会崩，没法继续。
  f("全局常量", y);
}
